import numpy as np

'''
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库，
支持大量的维度数组与矩阵运算，此外也针对数组运算提供大量的数学函数库。
NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发，
2005 年，Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色，
并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

numpy当中有一个非常重要的数据结构对象：ndarray，它是一个多维数组对象，可以处理任意维度的数组，并提供大量的数组运算函数。
从长相上来看，ndarray很像python的list
    ndarray是numpy当中的核心内容，值的网络，(1,2,3,4,5,6)
    ndarray是一个多维数组对象(同构多维容器)，可以处理任意维度的数组，并提供大量的数组运算函数。
    ndarray是一个通用的同质数据多维容器，即其中的所有元素类型必须相同，每个元素都是相同类型的数据。
'''

# 1 使用numpy：import numpy as np
# 2 创建一个列表，将列表导入到ndarray中
lists = [i for i in range(10)]
# print(lists)
# 将列表数据变成数组数据
list_ndarray = np.array(lists)
# print(list_ndarray)
# 3 创建一个全1的数组
one_ndarray = np.ones((3, 4))
# one_ndarray = np.ones(10)
# print(one_ndarray)
# 4 创建一个全0的数组
zero_ndarray = np.zeros((3, 4))
# print(zero_ndarray)
# 5 指定形状：几行几列全为几
full_ndarray = np.full(
    # 形状
    (20, 20),
    # 值
    6
)
# print(full_ndarray)

# 6 查看指定数组的维度大小，维度数
# 查看指定数组的结构
full_shape = full_ndarray.shape
# print(full_shape)
# 查看指定数组的维度数，轴的概念
full_ndim = full_ndarray.ndim
# print(full_ndim)

# 7 修改数据的维度
# 随机生成数组
reshape_random = np.arange(20)
print(reshape_random)
reshape1 = reshape_random.reshape(4, 5)
# print(reshape1)
reshape2 = reshape_random.reshape(2, 10)
# print(reshape2)
reshape3 = reshape_random.reshape(4, -1)
# print(reshape3)
reshape4 = reshape_random.reshape(-1, 4)
# print(reshape4)
# 将数据转成1维的数组
reshape5 = full_ndarray.reshape(-1)
reshape6 = full_ndarray.reshape(1, -1)
# print(reshape6)

# 随机生成
random_ndarray1 = np.random.random((3, 4))
# print(random_ndarray1)
random_ndarray2 = np.random.random(100)
# print(random_ndarray2)

# 随机1-100
random_ndarray3 = np.linspace(1, 100, 25)
# print(random_ndarray3)

# numpy的切片
arr_split = np.arange(20).reshape(4, 5)
print(arr_split)
# 起始位置:末位置:步长 --> 左闭右开[1,2)
arr_split = arr_split[1:4:2, 1:4:2]
print(arr_split)